As data rates for new generation integrated circuits (ICs) continue to increase, the amount of a type of noise known as jitter in a data stream is becoming an important factor in the quality of data output. As used herein, jitter may be defined as uncertainties in the relative position of data transitions relative to a fixed reference edge. The number of applications for high speed interfaces have increased. Resultantly, a signal is typically sent over several different networks before reaching its destination. As a signal goes through each of these networks, jitter is introduced into the data stream. When this data reaches the intended receiver, even though the data stream began as a clean signal, it ends up as a dirty signal. Even though data streams with very low jitter may be generated, the amount of jitter in the received data stream may be quite large. This results when data output from a transmitter transits through different devices, each of these devices will, in turn, introduce one or another type of jitter into the data stream. Thus, data received by the target receiver may have different amounts of jitter, depending on the path the data took, the type of data pattern and/or other factors. So, when jitter levels in a data stream are high and the performance of the receiver is relatively marginal to begin with, the receiver may not function properly.
There are several types of existing jitter injection modules (JIMs). JIMs are intended to introduce jitter in the output data of a transmitter of a high speed data stream, simulating a data communication environment. An existing JIM may be a stand-alone module or may be a module embedded in an IC design.
In order to introduce jitter in a transmitted data stream, an existing external JIM may be inserted between a transmitter and a receiver. However, existing external JIMs have several disadvantages. When there are multiple high speed data channels in an IC, each of these channels requires its own separate JIM. Also, existing JIMs do not have a provision to introduce jitter in a controllable manner, in such a manner as to control the amount of jitter or to provide a variety of different types of jitter. For external JIMs, with, for example, a co-located transmitter and receiver, an external loop back may be used to introduce jitter. For an internal loop back, there is no existing manner to create jitter to measure quality of the receiver.
An existing embedded JIM is typically inserted in the path of a high speed clock or the data path. This method is an invasive manner for accomplishing jitter injection into a data stream. This technique also has disadvantages. Any module connected to a high throughput, or high bit rate, data stream has a potential to degrade the performance of a transmitter connected thereto. Hence, an IC embedded JIM is not a preferred method to inject jitter in the transmitted data stream. In an IC there are typically multiple high speed data channels. Therefore, an embedded JIM module must be incorporated in each of the transmitter channels, which will be a significant waste of physical IC space.